<?php

class FilmsController extends AppController{

    var $uses = array('Film', 'Seance');

	//Actions ne nécessitant pas d'authentification
    public function beforeFilter(){
        parent::beforeFilter();
        $this->Auth->allow('index', 'show');
    }

    //Autorisations
    public function isAuthorized($user) {

        //Seul l'administrateur peut ajouter/modifier/supprimer des films
        if (isset($user['role']) && $user['role'] === 'admin') {

            if ($this->action === 'admin_add')
                return true;
            if ($this->action === 'admin_edit')
                return true;
            if ($this->action === 'admin_delete')
                return true;
        }

        return parent::isAuthorized($user);
    }

    //Action par défaut
    public function index() {

        $now = date("Y-m-d");
        $tomorrow = date('Y-m-d', strtotime('+1 day'));

        //Récupération des séances du jour
        $query = $this->Seance->find('all', array(
            'conditions' => array('Seance.date >=' => $now, 'Seance.date <=' => $tomorrow ),
            'order' => array('Seance.date ASC')
        ));
        $this->set('today', $query);

		$query = $this->Film->find('all', array(
			'fields' => array('id', 'titre', 'affiche'),
            'order' => array('Film.titre ASC')
		));
		$this->set('films', $query);
	}
    
    //Afficher un film
    public function show($id) {
        $this->Film->id = $id;
        $this->set('film', $this->Film->read());
    }

    public function admin_index() {
        $query = $this->Film->find('all', array(
            'fields' => array('id', 'titre')
        ));
        $this->set('films', $query);
    }
    
    //Créer un film
    public function admin_add() {
        if (!empty($this->data)) {
            //Sauvegarde de l'affiche
            if(!empty($this->data['Film']['affiche_src']['name']))
            {
                move_uploaded_file($this->data['Film']['affiche_src']['tmp_name'], "img/affiches/".$this->data['Film']['affiche_src']['name']);
                $this->request->data['Film']['affiche'] = "affiches/".$this->data['Film']['affiche_src']['name'];
            }

            //Enregistrement dans la base
            if ($this->Film->save($this->data)) {
                $this->Session->setFlash('Le film a été sauvegardé.');
                $this->redirect(array('admin' => true,'controller' => 'films', 'action' => 'index'));
            }
        }
    }
    
    //Modifier un film
    public function admin_edit($id = null) {
        if (empty($this->data)) {
            $this->Film->id = $id;
            $this->data = $this->Film->read();
        } else {
            //Sauvegarde de l'affiche
            if(!empty($this->data['Film']['affiche_src']['name']))
            {
                move_uploaded_file($this->data['Film']['affiche_src']['tmp_name'], "img/affiches/".$this->data['Film']['affiche_src']['name']);
                $this->request->data['Film']['affiche'] = "affiches/".$this->data['Film']['affiche_src']['name'];
            }

            //Enregistrement dans la base
            if ($this->Film->save($this->data['Film'])) {
                $this->Session->setFlash('Le film a été modifié.');
                $this->redirect(array('admin' => true,'controller' => 'films', 'action' => 'index'));
            }
        }
    }

    public function admin_delete($id) {
        $this->Film->delete($id);
        $this->Session->setFlash('Le film a été supprimé.');
        $this->redirect(array('admin' => true,'controller' => 'films', 'action' => 'index'));
    }
}

?>